const db = uniCloud.database();
const cmd = db.command;
//此回调函数主要实现支付回调校验，防止前端
module.exports = async (obj) => {
  let user_order_success = true;
  let {
    data = {}
  } = obj;
  let {
    order_no,
    out_trade_no,
    total_fee
  } = data; // uni-pay-orders 表内的数据均可获取到，直接解构出想要的即可

  //根据订单号获取订单信息
  let orderRes = await db.collection("ly-mall-order").where({
    order_no: order_no
  }).get();

  let carList = orderRes.data[0].carsList;

  //获取订单中的商品id
  if (orderRes.data.length > 0) {
    let ids = carList.map(item => {
      return item.goodsid
    })
    //获取商品信息
    let goodsRes = await db.collection("ly-mall-goods").where({
      _id: cmd.in(ids)
    }).get();

    let totalPrice = 0;
    // 遍历goodsRes.data中的每一个item
    goodsRes.data.forEach(item => {
      // 在carList中查找与item._id相等的商品
      let idx = carList.findIndex(item2 => {
        return item2.goodsid == item._id
      })
      // 将item的价格乘以carList中对应商品的numvalue，并累加到totalPrice中
      totalPrice += item.price * carList[idx].numvalue
    })

    if (totalPrice == total_fee) {
      // 根据订单号更新订单状态 1-完成
      db.collection("ly-mall-order").where({
        order_no: order_no
      }).update({
        status: 1,
        out_trade_no: out_trade_no
      })
    } else {
      // 根据订单号更新订单状态为 -2-异常
      db.collection("ly-mall-order").where({
        order_no: order_no
      }).update({
        status: -2,
        realPrice: total_fee,
        out_trade_no: out_trade_no
      })
      user_order_success = false;
    }
  }
  return user_order_success;
}